-
Notifications
You must be signed in to change notification settings - Fork 67
feat: add --show-estimates flag to job list and job get #992
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: mainline
Are you sure you want to change the base?
feat: add --show-estimates flag to job list and job get #992
Conversation
| def cli_job(): | ||
| """ | ||
| def _format_duration(seconds: float) -> str: | ||
| """Format seconds as human-readable duration (e.g., '1 hour, 30 minutes').""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There seems to an issue with the comment quotes (e.g. """). The one in line 108 should be removed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Issue addressed in the latest revision.
| return ", ".join(parts) | ||
|
|
||
|
|
||
| def _estimate_completion_time(job: dict) -> Optional[str]: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clever!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is pretty cool, @vinadomi11! Could we add unit tests?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just updated!
| def cli_job(): | ||
| """ | ||
| def _format_duration(seconds: float) -> str: | ||
| """Format seconds as human-readable duration (e.g., '1 hour, 30 minutes').""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Issue addressed in the latest revision.
| ) | ||
| class TestEstimateCompletionTime: | ||
| def test_format_duration_seconds(self): | ||
| from deadline.client.cli._groups.job_group import _format_duration |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we move all the imports to the top of the file? As opposed to have an import in each test.
| @_handle_error | ||
| def cli_job(): | ||
| """ | ||
| """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The spacing is broken here. You should be able to run 'hatch run fmt' to fix this up to 4 instead of 3 spaces.
This docstring should also not change in your PR. I see that below, it's adjacent to code, which looks wrong.
| parts = [f"{hours} hour{'s' if hours != 1 else ''}"] | ||
| if mins: | ||
| parts.append(f"{mins} minute{'s' if mins != 1 else ''}") | ||
| return ", ".join(parts) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This helper function could go into _job_helpers.py instead of in this main job_group file, to keep this one focused on the interface itself.
|
|
|
||
|
|
||
| def _estimate_completion_time(job: dict) -> Optional[str]: | ||
| """Estimate job completion time based on task progress and elapsed time.""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This function returns an estimated remaining duration, not a completion time. The name should reflect that.
| }, | ||
| } | ||
|
|
||
| with patch.object(api._session, "get_boto3_session") as session_mock: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We're using the deadline_mock fixture for this instead of patching the boto3 session directly, it would be great to switch these tests over to that.



What was the problem/requirement? (What/Why)
Users have no way to see estimated completion time for in-progress jobs from the CLI. This makes it harder to plan and monitor long-running render jobs.
What was the solution? (How)
Added a --show-estimates flag to deadline job list and deadline job get commands that displays estimated time remaining for in-progress jobs. The estimate is calculated by:
Computing average time per completed task
Multiplying by remaining tasks (running + pending)
Output shows human-readable durations like "5 minutes" or "1 hour, 30 minutes".
What is the impact of this change?
New optional CLI flag - no impact on existing behavior.
How was this change tested?
Have you run the unit tests?
Have you run the integration tests?
Was this change documented?
Are relevant docstrings in the code base updated?
Has the README.md been updated?
Does this PR introduce new dependencies?
This PR does not add any new dependencies.
Is this a breaking change?
No - this adds an optional flag with no changes to existing behavior.
Does this change impact security?
No security impact.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.